﻿using RN;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Lab1
{
    public class Program
    {
        static void Main(string[] args)
        {
            MailServer servidor = new MailServer();
            List<MailClient> cliente = new List<MailClient>();
            String user;
            ConsoleKeyInfo op;
            do
            {
                Console.WriteLine();
                Console.WriteLine();
                Console.Write("[A] Crear Servidor\t");
                Console.Write("[B] Crear Usuario\t");
                Console.Write("[C] Nuevo Mensaje\t");
                Console.Write("[D] Revisar Mensajes\t");
                Console.Write("[E] Leer Correo\t");
                Console.Write("[Esc] Salir\t\n\n");
                Console.WriteLine("Elija la opción...");
                op = Console.ReadKey(true);
                switch (op.Key)
                {
                    case ConsoleKey.A:
                        Console.WriteLine("Ingrese el nombre del servidor...");
                        servidor = new MailServer(Console.ReadLine());
                        Console.WriteLine("Presione una tecla para continuar...");
                        Console.ReadKey();
                        break;
                    case ConsoleKey.B:
                        Console.WriteLine("Ingrese el nombre del usuario...");
                        MailClient usuario = new MailClient(servidor, Console.ReadLine());
                        cliente.Add(usuario);
                        Console.WriteLine("Presione una tecla para continuar...");
                        Console.ReadKey();
                        break;
                    case ConsoleKey.C:
                        Console.WriteLine("Ingrese los datos del correo...");
                        Console.WriteLine("From...");
                        String from = Console.ReadLine();
                        Console.WriteLine("To...");
                        String to = Console.ReadLine();
                        Console.WriteLine("Subject...");
                        String subject = Console.ReadLine();
                        Console.WriteLine("Message...");
                        String messages = Console.ReadLine();
                        MailClient enviar = new MailClient(servidor, from);
                        enviar.sendMessage(from, to, subject, messages);
                        Console.WriteLine("Se ha enviado el correo...");
                        Console.WriteLine("Presione una tecla para continuar...");
                        Console.ReadKey();
                        break;
                    case ConsoleKey.D:
                        Console.WriteLine("Elija Usuario...");
                        user = Console.ReadLine();
                        Console.WriteLine(user + " tiene " + servidor.getMessagesWaiting(user) + " nuevo(s) mensaje(s) en el servidor.");
                        break;
                    case ConsoleKey.E:
                        Console.WriteLine("Elija Usuario...");
                        user = Console.ReadLine();
                        Message lectura = servidor.getNextMessage(user);
                        Console.WriteLine();
                        Console.WriteLine("Enviado Por: " + lectura.From);
                        Console.WriteLine("Para: " + lectura.To);
                        Console.WriteLine("Asunto: " + lectura.Subject);
                        Console.WriteLine("Mensaje: " + lectura.Messages);
                        break;
                    case ConsoleKey.Escape:
                        System.Environment.Exit(0);
                        break;
                    default:
                        break;
                }
            } 
            while (op.Key != ConsoleKey.Escape);
        }
    }
}